//package com.zookeeper.mine.study.utils;
//
//import org.I0Itec.zkclient.IZkChildListener;
//import org.I0Itec.zkclient.IZkDataListener;
//import org.I0Itec.zkclient.IZkStateListener;
//import org.I0Itec.zkclient.ZkClient;
//import org.apache.zookeeper.Watcher;
//import org.apache.zookeeper.data.Stat;
//
//import java.util.List;
//
//public class ZKClientUtils {
//
//    private final static String connectString = "";
//
//    private final static Integer sessionTimeout = 1000;
//
//    public static void main(String[] args) throws Exception {
//
//        ZkClient zkClient =  new ZkClient(connectString,sessionTimeout);
//        zkClient.waitUntilConnected();
//
//        String parentPath = "/a";
//
//        String childrenPath = parentPath + "/children";
//
//        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//        //监听器不再是一次性，此时parentPath还不存在，可以对还没存在的节点进行监听
//
//        //订阅节点数据变化的事件
//        zkClient.subscribeDataChanges(parentPath, new IZkDataListener() {
//            @Override
//            public void handleDataChange(String s, Object o) throws Exception {
//                System.out.println("handleDataChange = > s==>"+s);
//                System.out.println("handleDataChange = > o==>"+o);
//            }
//
//            @Override
//            public void handleDataDeleted(String s) throws Exception {
//                System.out.println("handleDataDeleted = > s==>"+s);
//            }
//        });
//
//        zkClient.subscribeDataChanges(childrenPath, new IZkDataListener() {
//            @Override
//            public void handleDataChange(String s, Object o) throws Exception {
//                System.out.println("handleDataChange ==children== > s==>"+s);
//                System.out.println("handleDataChange ==children== > o==>"+o);
//            }
//
//            @Override
//            public void handleDataDeleted(String s) throws Exception {
//                System.out.println("handleDataDeleted ==children== > s==>"+s);
//            }
//        });
//
//        //订阅节点状态变化的事件
//        zkClient.subscribeStateChanges(new IZkStateListener() {
//            @Override
//            public void handleStateChanged(Watcher.Event.KeeperState keeperState) throws Exception {
//                System.out.println("handleStateChanged==>"+keeperState);
//            }
//
//            @Override
//            public void handleNewSession() throws Exception {
//
//            }
//
//            @Override
//            public void handleSessionEstablishmentError(Throwable throwable) throws Exception {
//
//            }
//        });
//
//        //订阅子节点变化的事件
//        zkClient.subscribeChildChanges(parentPath, new IZkChildListener() {
//            @Override
//            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
//                System.out.println(parentPath + "的子节点发生改变----" + "它的子节点是：" + currentChilds);
//            }
//        });
//        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
//        zkClient.createPersistent(parentPath,"aaaaaaaaa");
//        Thread.sleep(1000);
//
//        //创建子节点
//        zkClient.createPersistent(childrenPath, true);
//        //写入数据
//        zkClient.writeData(childrenPath,"children");
//        Thread.sleep(1000);
//
//        //读数据
//        String childr = zkClient.readData(childrenPath);
//        System.out.println(childr);
//
//        //删除子节点
//        //zkClient.deleteRecursive(childrenPath);
//        //Thread.sleep(1000);
//
//        //获取节点的子节点
//        String nodePath1 = parentPath + "/node1";
//        String nodePath2 = parentPath + "/node2";
//
//        zkClient.createPersistent(nodePath1);
//        zkClient.createPersistent(nodePath2);
//
//        List<String> children = zkClient.getChildren(parentPath);
//        for (String child : children) {
//            /**
//             * 输出：节点：node2   节点：node1
//             */
//            System.out.println("节点：" + child);
//        }
//        zkClient.delete(nodePath1);
//        zkClient.delete(nodePath2);
//
//        //删除父节点
//        zkClient.deleteRecursive(parentPath);
//        Thread.sleep(1000);
//
//        zkClient.unsubscribeAll();
//
//
//
//        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
////        zkClient.createPersistent(parentPath);
////        zkClient.createPersistent(childrenPath,"abc");
////
////        Stat stat = new Stat();
////        Stat stat1 = new Stat();
////
////
////        zkClient.readData(childrenPath,stat);
////
////        stat1 = zkClient.writeDataReturnStat(childrenPath,"123", stat.getVersion());
////        System.out.println(stat1.getVersion());
////
////        zkClient.writeData(childrenPath,"1");
////        System.out.println(stat1.getVersion());
//
//
////        //删除父节点
////        zkClient.deleteRecursive(parentPath);
////        Thread.sleep(1000);
////
////        zkClient.unsubscribeAll();
//        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//    }
//
//}
